home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (PO)
/
Nibble Volume 12, No. 02 (1991-02)(MindCraft Publishing)(Side A)[a].zip
/
Nibble Volume 12, No. 02 (1991-02)(MindCraft Publishing)(Side A)[a].po
/
PRINT.CHARM.S
< prev
next >
Wrap
Text File
|
1996-12-24
|
4KB
|
207 lines
***************************
* PRINT.CHARM.S Source *
* By Frank H. Sweet *
* Copyright 1991 by *
* MindCraft Publ. Corp. *
***************************
*
CROUT = $FD8E
COUT = $FDED
*
CLREOL = $FC9C
CLREOP = $FC42
CH = $24
TABV = $FB5B
WNDLFT = $20
WNDWDTH = $21
*
DESC = $EB
FACMO = $A0
STRPRT = $DB3D
STROUT = $DB3A
PRBLNK = $F948
PRBL2 = $F94A
*
RDKEY = $FD0C
INVFLG = $32
PRA = $FE95 ;PR#'A' - OUTPORT
DOSHOOK = $3D0 ;Dos or ProDOS exit
*
*
ORG $6000
*
*BUILD 5-BYTE DESCRIPTOR FOR STRING (LENGTH,LO,HI,00,00)
LDA #MESS2-MESS1 ;CALCULATES STRING LENGTH
STA DESC
LDA #<MESS1
STA DESC+1
LDA #>MESS1
STA DESC+2
LDA #0
STA DESC+3
STA DESC+4
*
*
LDA #3
JSR PRA ;PR#3 - 80COLUMN SCREEN
JSR D1
*
*DEMO1 --- COUT, PRBLNK, PRBL2, CROUT
*
LDA #"A" ;NORMAL
JSR COUT
JSR PRBLNK
LDA #'A' ;INVERSE
JSR COUT
LDX #32 ;32 BLANKS
JSR PRBL2
LDA #"B"
JSR COUT
JSR CROUT ;TO TERMINATE LINE
JSR CROUT ;TO CREATE BLANK LINE
JSR D2
*
*DEMO2 --- USING HORIZONTAL CURSGR
*
LDA #"1"
JSR COUT
LDX #64
STX CH
LDA #"2"
JSR COUT
LDX #32
STX CH
LDA #"3"
JSR COUT
JSR CROUT
JSR CROUT
JSR D3
*
*DEMO3 --- SETTING LEFT EDGE OF SCREEN
* AND USING VTAB TO CREATED INDENTED BLOCK
*
LDA #36 ;MUST BE EVEN!
STA WNDLFT ;SET LEFT EDGE OF SCREEN TO 36
LDA #11
JSR TABV ;DO VTAB TO 11 (LINE 12)
JSR CROUT ;NEEDED TO GET TO LEFT EDGE
;NOW AT 12 (LINE 13)
*
*DEMO3 --- STRPRT
*
LDA #<DESC
STA FACMO
LDA #>DESC
STA FACMO+1
JSR STRPRT ;FACMO-LO POINTS TO STRING
LDA #20 ;MUST BE EVEN
STA WNDWDTH ;SET WINDOW TO WIDTH 20
JSR CROUT ;GO TO LEFT SIDE OF WINDOW
LDX #5 ;INDENT 5
STX CH
JSR STRPRT
*
LDA #0
STA WNDLFT
LDA #80
STA WNDWDTH ;RESTORE NORMAL WINDOW
JSR CROUT
*
LDA #48 ;SET CURSOR TO HORIZONTAL 48
STA CH
*
*DEMO3 --- STROUT
*
LDA #<MESS1
LDY #>MESS1 ;POINT TO STRING LO-HI 'A'-'Y'
JSR STROUT
JSR CROUT
JSR D4
*
*DEMO4 --- INVERSE MESSAGE AND CLR ROUTINES
*
LDX #5 ;INDENT 5
STX CH
LDA #21
JSR TABV
LDX #$3F ;INVERSE
STX INVFLG
JSR TOUCH
LDX #$FF ;NORMAL
STX INVFLG
*
LDA #24
STA CH
LDA #21
JSR TABV
JSR CLREOL ;ERASE PART OF MESSAGE
LDX #10 ;10 BLANKS
JSR PRBL2
JSR TOUCH
LDA #38
STA CH
LDA #12
JSR TABV
JSR CLREOP
JSR CROUT
JSR DOSHOOK
RTS
*
*
D1 LDA #<DEMO1
LDY #>DEMO1
JSR STROUT
JSR TOUCH
RTS
*
*
D2 LDA #<DEMO2
LDY #>DEMO2
JSR STROUT
JSR TOUCH
RTS
*
*
D3 LDA #<DEMO3
LDY #>DEMO3
JSR STROUT
JSR TOUCH
RTS
*
*
D4 LDA #<DEMO4
LDY #>DEMO4
JSR STROUT
JSR TOUCH
RTS
*
*
TOUCH LDA #<INSTR0
LDY #>INSTR0
JSR STROUT
JSR RDKEY
JSR CROUT
RTS
*
INSTR0 ASC 'To continue, touch a key '
HEX 00 ;TERMINATOR FOR STROUT STRING
*
MESS1 ASC "MARY HAD A LITTLE LAMB "
HEX 0D ;CARRIAGE RETURN TO BREAK LINE
ASC "THAT'S NICE !!!"
HEX 00
*
MESS2 ASC " " ;FAKE MESSAGE
*
DEMO1 ASC "DEMO 1 --- COUT, PRBLNK, PRBL2, CROUT. "
HEX 00
*
DEMO2 ASC "DEMO 2 --- USING HORIZONTAL CURSOR. "
HEX 00
*
DEMO3 ASC "DEMO 3 --- WINDOW, INDENTED BLOCK, STRPRT, STROUT. "
HEX 00
*
DEMO4 ASC "DEMO 4 --- INVERSE AND CLR. "
HEX 00